bitkeeper revision 1.598 (3fb2e274GU15kd_YoIRRIuuWRWScng)
authorlaudney@eclipse.(none) <laudney@eclipse.(none)>
Thu, 13 Nov 2003 01:46:28 +0000 (01:46 +0000)
committerlaudney@eclipse.(none) <laudney@eclipse.(none)>
Thu, 13 Nov 2003 01:46:28 +0000 (01:46 +0000)
Fixes for Xen console buffer ring.

BitKeeper/etc/logging_ok
tools/internal/xi_read_console_ring.c
xen/common/console.c
xen/common/dom0_ops.c
xen/common/kernel.c
xen/include/hypervisor-ifs/dom0_ops.h
xen/include/xeno/console.h

index 7c732bc73cc4cd5a78dd594fc35c958c11dcee22..461b17a97a28ab6c9668b94efa4145144bede67a 100644 (file)
@@ -17,6 +17,7 @@ kaf24@labyrinth.cl.cam.ac.uk
 kaf24@plym.cl.cam.ac.uk
 kaf24@scramble.cl.cam.ac.uk
 kaf24@striker.cl.cam.ac.uk
+laudney@eclipse.(none)
 lynx@idefix.cl.cam.ac.uk
 rac61@labyrinth.cl.cam.ac.uk
 rgr22@boulderdash.cl.cam.ac.uk
index 9f28823c2099b45dc44e0bb3a3e893c1edfc1807..eaa73aed92f863a7660c438ae3516528976efee2 100644 (file)
@@ -7,7 +7,7 @@
 #define CONSOLE_RING_SIZE 16392
 static char *argv0 = "read_console_ring";
 
-static long read_console_ring(char *str, unsigned count)
+static long read_console_ring(unsigned long str, unsigned count)
 {
     int ret;
     dom0_op_t op;
@@ -18,7 +18,7 @@ static long read_console_ring(char *str, unsigned count)
 
     ret = do_dom0_op(&op);
     if (ret > 0) {
-        *(str + ret) = '\0';
+        *((char *)str + ret) = '\0';
     }
 
     return ret;
@@ -36,7 +36,7 @@ int main(int argc, char **argv)
         return 1;
     }
     
-    if ( read_console_ring(str, CONSOLE_RING_SIZE) < 0 ) {
+    if ( read_console_ring((unsigned long)str, CONSOLE_RING_SIZE) < 0 ) {
        printf("Read console ring error.\n");
        printf("%s", str);
         return 1;
index 4836dc91d15d454f61620f373bdb81ef070ea3f4..f6e3f250bbdb904cc48f3daed341e69607e0b054 100644 (file)
@@ -8,18 +8,22 @@
 #include <xeno/console.h>
 #include <asm-i386/uaccess.h>
 
+console_ring_t console_ring = {
+    .len = 0
+};
+
 void init_console_ring()
 {
     console_ring.len = 0;
 }
 
-long read_console_ring(char *str, unsigned int count)
+long read_console_ring(unsigned long str, unsigned int count)
 {
     unsigned int len;
     
     len = (console_ring.len < count)? console_ring.len : count;
     
-    if ( copy_to_user(str, console_ring.buf, len) )
+    if ( copy_to_user((char *)str, console_ring.buf, len) )
         return -EFAULT;
 
     return len;
index a1ac3a41dac83cf5d9092f237b897dba484a3746..0558a1e40b5d7f231cdc73ca5d151764d1b79510 100644 (file)
@@ -415,7 +415,7 @@ long do_dom0_op(dom0_op_t *u_dom0_op)
     
     case DOM0_READCONSOLE:
     {
-       extern long read_console_ring(char *, unsigned int);
+       extern long read_console_ring(unsigned long, unsigned int);
         ret = read_console_ring(op.u.readconsole.str, 
                                op.u.readconsole.count); 
     }
index 8e2b7a7d4979ed01aadb4c15ecf7d1d3b397f766..9f6fb745561a5f2fffdadcf837816ea058e55131 100644 (file)
@@ -156,7 +156,6 @@ void cmain (unsigned long magic, multiboot_info_t *mbi)
     }
 
     init_serial();
-    init_console_ring();
     init_vga();
     cls();
 
index 134eb82ddf6ace13a8dbb957a776bde5351af0f6..770305f6acd39ed946b78e287238631912efd7e1 100644 (file)
@@ -192,7 +192,7 @@ typedef struct dom0_settime_st
 #define DOM0_READCONSOLE      19
 typedef struct dom0_readconsole_st
 {
-    char *str;
+    unsigned long str;
     unsigned int count;
 } dom0_readconsole_t;
 
index aff48143822eb209677cc8213c43016f25aa8406..589754d08a135b8198db38b993b79ed9c2472d4f 100644 (file)
@@ -51,7 +51,7 @@ typedef struct console_ring_st
     unsigned int len;
 } console_ring_t;
 
-console_ring_t console_ring;
+extern console_ring_t console_ring;
 
 void init_console_ring();
-long read_console_ring(char *str, unsigned int count);
+long read_console_ring(unsigned long, unsigned int);